Personal mobile communication/computing devices such as cellular telephones, personal digital assistants (PDAs), two-way pagers and the like have become ubiquitous in many countries. These devices are sometimes collectively called “mobile devices”. Many of the latest generation mobile devices provide their users with the ability to access resources on the Internet via wireless telecommunications networks (“wireless networks”). For example, some of these mobile devices allow their users to access World Wide Web pages, exchange email and/or instant messages, and download files over the Internet.
A proxy server (or “proxy”) is often used to facilitate access by mobile devices to the Internet. The proxy relays (“proxies”) requests and responses between mobile devices (clients) on the wireless network and servers on the Internet. Typically, the proxy is implemented in a conventional server-class computer system that is coupled between the wireless network and the Internet. This computer system may also include a gateway that translates/converts between the languages and protocols used on the Internet and the languages and protocols used by mobile devices. For example, the Internet is based mainly on the use of hypertext transfer protocol (HTTP) and languages such as hypertext markup language (HTML) and extensible markup language (XML); mobile devices, on the other hand, commonly use wireless access protocol (WAP) and wireless markup language (WML) for purposes of Internet access.
We are now in a time of transition, where we are moving from a time in which the WAP stack was the primary way for mobile devices to access Internet-based content to one in which HTTP is commonly used. This transition cannot be made instantaneously, however. Different network operators will install different network infrastructure in their various networks at different times. Networking protocols can be very complex, and manufacturers do not want to have to offer mobile devices with different networking protocols for different wireless carriers. Carriers do not want customers to be unable to use newer infrastructure when it is installed, nor do carriers want to have to maintain older infrastructure to accommodate customers who have not upgraded their phones in several years.
For these reasons and others, it is desirable to have a system that allows an application on a mobile device to select the most appropriate proxy and protocol for what it is trying to do. It is also desirable to have a system that enables a wireless carrier to provision and change what proxy and/or protocol should be used for each application.
Certain technologies exist which are partial solutions at best, but fall short of achieving these goals. For example, the concept of sockets provides the ability to use a single abstract networking interface to communicate over multiple protocols. In that approach, one creates a socket and specifies whether it should be a stream or a datagram socket, what type of addressing one expects to use, and optionally a specific protocol to use. If one does not specify the protocol, the implementation uses the socket type and addressing type to determine the protocol. For example, a stream socket with Internet addressing is interpreted to mean that transmission control protocol (TCP) is to be used, while a stream socket with NetWare addressing means to use sequenced packet exchange (SPX). However, in part because the client must specify the address and port number, the model used by sockets is too low-level and simplistic and offers no flexibility for provisionable behavior (i.e., the ability for a network operator to tell a client which proxies are best-suited for which applications).
The WAP forum has specified an end-to-end security framework that provides for dynamic proxy navigation; see “WAP Transport Layer End-to-End Security”, WAP-187-TransportE2ESec-20010628-a, WAP Forum, Jun. 28, 2001. In this framework, an origin server can send a navigation document to a client requesting that it create a session through an alternate gateway. In this scenario, all traffic is presumed to travel through that proxy until the user navigates away from the domain of the server that requested the change. However, the framework provides no ability for a client application to select the most appropriate proxy and/or protocol, nor does it support provisioning of selectable proxies.
Some browsers used in mobile devices allow selection of a proxy from a list of proxies. However, there is still no ability to provision, or to select in a mobile device, the most appropriate proxy or protocol for any of multiple applications in the mobile device.